freeslot(
"SFX_CHIRP",
"SPR_SMLB",
"SPR_BLOS",
"MT_BUSH1",
"SPR_GLOS",
"SPR_PLOS",
"SPR_PGPT",
"SPR_PGPS",
"SPR_PMS4",
"SPR_PGS1",
"SPR_PGS2",
"SPR_PGS5",
"S_LAMP1",
"S_LAMP2",
"MT_LAMP",
"S_SMLB",
"S_BLOS",
"MT_TREE",
"S_GLOS",
"MT_BUSH2",
"S_PLOS",
"MT_BUSH3",
"S_PGPT",
"MT_PETAL1",
"S_PGPS",
"MT_PETAL2",
"MT_GBDB",
"MT_TBDB",
"MT_BBDB",
"MT_IWDB"
)

freeslot("SPR_SAKR")

local snowflakes = {}

addHook("ThinkFrame", do
	if mapheaderinfo[gamemap].icespike	-- cant be assed
		if leveltime == 1
		or leveltime%1481 == 0
			S_StartSound(nil, sfx_chirp)
		end

		if snowflakes and #snowflakes
			local s = snowflakes[1]
			s.sprite = SPR_SAKR
			s.frame = P_RandomRange(0, 1)
			table.remove(snowflakes, 1)
		end
	end
end)

states[S_LAMP1] = {
        sprite = SPR_PMS4,
        frame = A,
		tics = 4,
        action = nil,
        var1 = 0,
		var2 = 0,
        nextstate = S_LAMP2
}

states[S_LAMP2] = {
        sprite = SPR_PMS4,
        frame = B,
		tics = 4,
        action = nil,
        var1 = 0,
		var2 = 0,
		nextstate = S_LAMP1
}


states[S_SMLB] = {
        sprite = SPR_SMLB,
        frame = A,
		tics = 1,
        action = nil,
        var1 = 0,
		var2 = 0,
        nextstate = S_SMLB
}


states[S_BLOS] = {
        sprite = SPR_BLOS,
        frame = A,
		tics = 1,
        action = nil,
        var1 = 0,
		var2 = 0,
        nextstate = S_BLOS
}


states[S_SMLB] = {
        sprite = SPR_SMLB,
        frame = A,
		tics = 1,
        action = nil,
        var1 = 0,
		var2 = 0,
        nextstate = S_SMLB
}


states[S_GLOS] = {
        sprite = SPR_GLOS,
        frame = A,
		tics = 1,
        action = nil,
        var1 = 0,
		var2 = 0,
        nextstate = S_GLOS
}

states[S_PLOS] = {
        sprite = SPR_PLOS,
        frame = A,
		tics = 1,
        action = nil,
        var1 = 0,
		var2 = 0,
        nextstate = S_PLOS
}

states[S_PGPT] = {
        sprite = SPR_PGPT,
        frame = A,
		tics = 1,
        action = nil,
        var1 = 0,
		var2 = 0,
        nextstate = S_PGPT
}

states[S_PGPS] = {
        sprite = SPR_PGPS,
        frame = A,
		tics = 2,
        action = nil,
        var1 = 0,
		var2 = 0,
        nextstate = S_PGPS
}

	mobjinfo[MT_BUSH2] = {
    doomednum = 4053,
    spawnstate = S_GLOS,
    spawnhealth = 1,
    seestate = S_NULL,
    seesound = sfx_None,
    reactiontime = 8,
    attacksound = sfx_None,
    painstate = S_NULL,
    painchance = 0,
    painsound = sfx_None,
    meleestate = S_NULL,
    missilestate = S_NULL,
    deathstate = S_NULL,
    xdeathstate = S_NULL,
    deathsound = sfx_pop,
    speed = 0,
    radius = 16*FRACUNIT,
    height = 48*FRACUNIT,
    dispoffset = 0,
    mass = 100,
    damage = 0,
    activesound = sfx_None,
    flags = MF_NOTHINK,
    raisestate = MT_THOK
}

	mobjinfo[MT_BUSH3] = {
    doomednum = 4054,
    spawnstate = S_PLOS,
    spawnhealth = 1,
    seestate = S_NULL,
    seesound = sfx_None,
    reactiontime = 8,
    attacksound = sfx_None,
    painstate = S_NULL,
    painchance = 0,
    painsound = sfx_None,
    meleestate = S_NULL,
    missilestate = S_NULL,
    deathstate = S_NULL,
    xdeathstate = S_NULL,
    deathsound = sfx_pop,
    speed = 0,
    radius = 16*FRACUNIT,
    height = 48*FRACUNIT,
    dispoffset = 0,
    mass = 100,
    damage = 0,
    activesound = sfx_None,
    flags = MF_NOTHINK,
    raisestate = MT_THOK
}

	mobjinfo[MT_TREE] = {
    doomednum = 4051,
    spawnstate = S_SMLB,
    spawnhealth = 1,
    seestate = S_NULL,
    seesound = sfx_None,
    reactiontime = 8,
    attacksound = sfx_None,
    painstate = S_NULL,
    painchance = 0,
    painsound = sfx_None,
    meleestate = S_NULL,
    missilestate = S_NULL,
    deathstate = S_NULL,
    xdeathstate = S_NULL,
    deathsound = sfx_pop,
    speed = 0,
    radius = 16*FRACUNIT,
    height = 48*FRACUNIT,
    dispoffset = 0,
    mass = 100,
    damage = 0,
    activesound = sfx_None,
    flags = MF_NOTHINK,
    raisestate = MT_THOK
}

	mobjinfo[MT_BUSH1] = {
    doomednum = 4052,
    spawnstate = S_BLOS,
    spawnhealth = 1,
    seestate = S_NULL,
    seesound = sfx_None,
    reactiontime = 8,
    attacksound = sfx_None,
    painstate = S_NULL,
    painchance = 0,
    painsound = sfx_None,
    meleestate = S_NULL,
    missilestate = S_NULL,
    deathstate = S_NULL,
    xdeathstate = S_NULL,
    deathsound = sfx_pop,
    speed = 0,
    radius = 16*FRACUNIT,
    height = 48*FRACUNIT,
    dispoffset = 0,
    mass = 100,
    damage = 0,
    activesound = sfx_None,
    flags = MF_SCENERY|MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY,
	flags = MF_NOTHINK,
    raisestate = MT_THOK
}

mobjinfo[MT_LAMP] = {
    doomednum = 4050,
    spawnstate = S_LAMP1,
    spawnhealth = 1,
    seestate = S_NULL,
    seesound = sfx_None,
    reactiontime = 0,
    attacksound = sfx_None,
    painstate = S_NULL,
    painchance = 0,
    painsound = sfx_None,
    meleestate = S_NULL,
    missilestate = S_NULL,
    deathstate = S_NULL,
    xdeathstate = S_NULL,
    deathsound = sfx_pop,
    speed = 0,
    radius = 1*FRACUNIT,
    height = 1*FRACUNIT,
    dispoffset = 0,
    mass = 100,
    damage = 0,
    activesound = sfx_None,
    flags = MF_NOGRAVITY|MF_SCENERY|MF_SPAWNCEILING,
    raisestate = MT_THOK
}

	mobjinfo[MT_TREE] = {
    doomednum = 4051,
    spawnstate = S_SMLB,
    spawnhealth = 1,
    seestate = S_NULL,
    seesound = sfx_None,
    reactiontime = 8,
    attacksound = sfx_None,
    painstate = S_NULL,
    painchance = 0,
    painsound = sfx_None,
    meleestate = S_NULL,
    missilestate = S_NULL,
    deathstate = S_NULL,
    xdeathstate = S_NULL,
    deathsound = sfx_pop,
    speed = 0,
    radius = 16*FRACUNIT,
    height = 48*FRACUNIT,
    dispoffset = 0,
    mass = 100,
    damage = 0,
    activesound = sfx_None,
    flags = MF_NOTHINK,
    raisestate = MT_THOK
}

mobjinfo[MT_PETAL1] = {
    doomednum = 4055,
    spawnstate = S_PGPT,
    spawnhealth = 1,
    seestate = S_NULL,
    seesound = sfx_None,
    reactiontime = 8,
    attacksound = sfx_None,
    painstate = S_NULL,
    painchance = 0,
    painsound = sfx_None,
    meleestate = S_NULL,
    missilestate = S_NULL,
    deathstate = S_NULL,
    xdeathstate = S_NULL,
    deathsound = sfx_pop,
    speed = 0,
    radius = 16*FRACUNIT,
    height = 48*FRACUNIT,
    dispoffset = 0,
    mass = 100,
    damage = 0,
    activesound = sfx_None,
    flags = MF_NOTHINK,
    raisestate = MT_THOK
}

mobjinfo[MT_PETAL2] = {
    doomednum = 4056,
    spawnstate = S_PGPS,
    spawnhealth = 1,
    seestate = S_NULL,
    seesound = sfx_None,
    reactiontime = 8,
    attacksound = sfx_None,
    painstate = S_NULL,
    painchance = 0,
    painsound = sfx_None,
    meleestate = S_NULL,
    missilestate = S_NULL,
    deathstate = S_NULL,
    xdeathstate = S_NULL,
    deathsound = sfx_pop,
    speed = 0,
    radius = 16*FRACUNIT,
    height = 48*FRACUNIT,
    dispoffset = 0,
    mass = 100,
    damage = 0,
    activesound = sfx_None,
    flags = MF_NOTHINK,
    raisestate = MT_THOK
}

addHook("MobjSpawn", function(mo)
	if mo and mo.valid and mapheaderinfo[gamemap].icespike
		mo.sprite = SPR_PGS1
		mo.frame = A|TR_TRANS10
	end
end, MT_SPIKE)

addHook("MobjSpawn", function(mo)
	if mo and mo.valid and mapheaderinfo[gamemap].icespike
		mo.sprite = SPR_PGS2
		mo.frame = A|TR_TRANS10|FF_PAPERSPRITE
	end
end, MT_WALLSPIKE)

addHook("MobjSpawn", function(mo)
	if mo and mo.valid and mapheaderinfo[gamemap].icespike
		mo.sprite = SPR_PGS5
		mo.frame = A|TR_TRANS10|FF_PAPERSPRITE
	end
end, MT_WALLSPIKEBASE)

/*addHook("MobjSpawn", function(mo)
	if mo and mo.valid and mapheaderinfo[gamemap].icespike
		print("ASS")
		snowflakes[#snowflakes+1] = mo
	end
end, MT_SNOWFLAKE)*/ -- doesn't work